import cv2
import matplotlib.pyplot as plt
import numpy as np
from holoviews.core.traversal import hierarchical
from numba import uint8
from sympy.abc import epsilon

def cv_show(name,img):
    cv2.imshow(name,img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

img = cv2.imread('C:/Users/nic/Desktop/opencv/picture/girl.jpg')
#创建掩码
#先获取一块与原图像大小的全黑色图片
mask = np.zeros(img.shape[:2],np.uint8)
#再把需要进行选择的部分变为白色，方便后续进行与操作
mask[100:200,100:200] = 255
#与操作，掩码为0的地方（黑色），不进行保存，掩码为255（白色），进行与操作，保存数值较小的，也就是原图
masked_img = cv2.bitwise_and(img,img,mask=mask)
#当有掩码的时候进行直方图统计
color = ('b','g','r')
for i,col in enumerate(color):
    histr = cv2.calcHist([img],[i],mask,[256],[0,256])
    plt.plot(histr,color=col)
    plt.xlim([0,256])
plt.show()


